Information or data processors are found in many contemporary electronic devices such as, for example, personal computers, personal digital assistants, game playing devices, video equipment and cellular phones. Processors used in today's most popular products are known as hardware as they comprise one or more integrated circuits. Processors execute software to implement various functions in any processor based device. Generally, software is written in a form known as source code that is compiled (by a complier) into object code. Object code within a processor is implemented to achieve a defined set of assembly language instructions that are executed by the processor using the processor's instruction set. An instruction set defines instructions that a processor can execute. Instructions include arithmetic instructions (e.g., add and subtract), logic instructions (e.g., AND, OR, and NOT instructions), and data instructions (e.g., move, input, output, load, and store instructions). As is known, computers with different architectures can share a common instruction set. For example, processors from different manufacturers may implement nearly identical versions of an instruction set (e.g., an x86 instruction set), but have substantially different architectural designs.
Within a processor, numerical data is typically expressed using integer or floating-point representation. Mathematical computations within a processor are generally performed in computational units designed for maximum efficiency for each computation. Thus, it is common for a processor architecture to have an integer computational unit and a floating-point computational unit. As the use of graphic processing and scientific computing has expanded, the use of a processor's integer and floating-point mathematical capabilities has been increasing. Other factors, such as use for audio processing, are also contributing to an increased use of a processor's mathematical capabilities. To accommodate these and other needs, and to meet the ever growing demand for increased integer and floating-point performance, the computational capability of processors is continually evolving.
When performing operations, including integer or floating-point computations, power virus code may occasionally cause the processor (or an operational unit) to consume more power than normal. Generally, power virus code comprises instructions that don't have any practical use; the code simply causes wasted power and operational cycles within the processor. Examples include code that causes unnecessary register-to-register data moves, operand reordering for commutative equations (e.g., addition or multiplication) or wait or no-op (no operation) instructions. In addition to wasting power and operational cycles, power virus code can cause the internal operating temperature of the processor to rise beyond specified performance parameters. Typically, an over-temperature condition causes a reset event to occur and the entire processor stops and is reset in accordance with a reset protocol.